import axios from "axios";
import {getTokenName, messageConfirm, messageTip, removeToken} from "../utils/util.js";

// 配置后端接口地址的前缀
axios.defaults.baseURL="http://localhost:8080"

// Get请求：用于查询
export function doGet(url,params){
    return  axios({
        method: 'GET',    // 请求方式
        dataType: 'json',  // 响应格式
        url: url,
        params: params
    })
}

// Post请求：用于新增
export function doPost(url,data){
    return  axios({
        method: 'POST',    // 请求方式
        dataType: 'json',  // 响应格式
        url: url,
        data: data
    })
}

// Put请求：用于修改
export function doPut(url,data){
    return  axios({
        method: 'PUT',    // 请求方式
        dataType: 'json',  // 响应格式
        url: url,
        data: data
    })
}

// Delete请求：用于删除
export function doDelete(url,params){
    return  axios({
        method: 'DELETE',    // 请求方式
        dataType: 'json',  // 响应格式
        url: url,
        params: params
    })
}

/**
 * 添加请求拦截器
 */
axios.interceptors.request.use(function (config) {
    // 从Session会话中获取Token
    let token=window.sessionStorage.getItem(getTokenName())

    // 如果Session没有，从本地获取Token
    if (!token){
        token=window.localStorage.getItem(getTokenName());
        if (token){
            config.headers['rememberMe']=token
        }
    }

    // 如果Token存在就将Token放在请求头中
    if (token){
        config.headers['Authorization']=token
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

/**
 * 添加响应拦截器
 */
axios.interceptors.response.use(function (response) {
    if (response.data.code>900){
        messageConfirm(response.data.msg).then(() => {
                // 清除Token
                removeToken();
                // 点击确定，跳转到登录页面
                window.location.href='/'
            })
            .catch(() => {
                messageTip('取消重新登录','warning')
            })
    }
    return response;
},function (error) {
    return Promise.reject(error);
});